package net.sk.china.city.mapper;

import java.util.Date;
import java.util.List;
import net.sk.china.city.domain.ArOrder;
import net.sk.china.city.domain.ArOrderItem;
import org.apache.ibatis.annotations.Select;

/**
 * 订单管理Mapper接口
 * 
 * @author ruoyi
 * @date 2024-06-06
 */
public interface ArOrderMapper 
{
    /**
     * 查询订单管理
     * 
     * @param pkId 订单管理主键
     * @return 订单管理
     */
    public ArOrder selectArOrderByPkId(Long pkId);

    /**
     * 查询订单管理列表
     * 
     * @param arOrder 订单管理
     * @return 订单管理集合
     */
    public List<ArOrder> selectArOrderList(ArOrder arOrder);

    /**
     * 新增订单管理
     * 
     * @param arOrder 订单管理
     * @return 结果
     */
    public int insertArOrder(ArOrder arOrder);

    /**
     * 修改订单管理
     * 
     * @param arOrder 订单管理
     * @return 结果
     */
    public int updateArOrder(ArOrder arOrder);

    /**
     * 删除订单管理
     * 
     * @param pkId 订单管理主键
     * @return 结果
     */
    public int deleteArOrderByPkId(Long pkId);

    /**
     * 批量删除订单管理
     * 
     * @param pkIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteArOrderByPkIds(Long[] pkIds);

    /**
     * 批量删除订单项
     * 
     * @param pkIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteArOrderItemByOrderIds(Long[] pkIds);
    
    /**
     * 批量新增订单项
     * 
     * @param arOrderItemList 订单项列表
     * @return 结果
     */
    public int batchArOrderItem(List<ArOrderItem> arOrderItemList);
    

    /**
     * 通过订单列表主键删除订单项信息
     * 
     * @param pkId 订单列表ID
     * @return 结果
     */
    public int deleteArOrderItemByOrderId(Long pkId);

    @Select("select sum(total_price) from ar_order where order_status in (1,2,3)")
    public Integer selectTotalSales();

    public Integer selectTimeBetweenSales(Date beginTime, Date endTime);

    public Integer selectTimeBetweenOrderNum(Date beginTime, Date endTime);

    public Integer selectTimeBetweenRefundOrderNum(Date beginTime, Date endTime);

    /**
     * 最新订单15条
     * @return
     */
    @Select("SELECT * FROM ar_order WHERE order_status IN (1,2,3) ORDER BY payment_datetime DESC LIMIT 15")
    List<ArOrder> latestOrders();

    @Select("SELECT * FROM ar_order WHERE order_status = 5 ORDER BY payment_datetime DESC LIMIT 15")
    List<ArOrder> refundOrder();
}
